2023/12/233329字符

获取窗口属性

查看滚动条的滚动距离(IE8及IE8以下不兼容)

window.pageXOffset  // 获取 X 轴滚动条
window.pageYOffset  // 获取 Y 轴滚动条

// IE: 
document.body.scrollLeft + document.documentElement.scrollLeft  // 获取 X 轴滚动条
document.body.scrollTop + document.documentElement.scrollTop  // 获取 Y 轴滚动条

兼容性混乱问题,用时取两个值相加,因为不可能存在两个同时有值

封装一个兼容性 getScrollOffset()方法,求滚动轮滚动距离

function getScrollOffset () {
    if (window.pageXOffset) {
        return {
            x : window.pageXOffset,
            y : window.pageYOffset 
        }
    } else {
        return {
            x : document.body.scrollLeft + document.documentElement.scrollLeft,
            y : document.body.scrollTop + document.documentElement.scrollTop
        }
    }
}

查看可视区窗口大小(IE8及IE8以下不兼容)

window.innerWidth  // 获取可视区 X 轴
window.innerHeight  // 获取可视区 Y 轴
// IE:
document.documentElement.clientWidth  // 获取可视区 X 轴 (标准模式下,任意浏览器都兼容)
document.documentElement.clientHeight  // 获取可视区 Y 轴
document.body.clientWidth  // 获取可视区 X 轴 (兼容怪异/混杂模式浏览器)
document.body.clientHeight  // 获取可视区 Y 轴

封装兼容性 getViewportOffset()方法,返回浏览器视口尺寸

function getViewportOffset () {
    if (window.innerWidth) {
        return {
            x : window.innerWidth,
            y : window.innerHeight
        }
    } else {
        if (document.compatMode === "BackCompt") {  // 判断是否为混杂模式
            return {
                x : document.body.clientWidth,
                y : document.body.clientHeight
            }
        } else {
            return {
                x : document.documentElement.clientWidth,
                y : document.documentElement.clientHeight
            }
        }
    }
}

domEle.getBoundingClientRect();

  • 查看元素的几何尺寸(兼容性很好)
  • 该方法返回一个对象,对象里面有left,top,right,bottom等属性。left和top代表该元素左上角的X和Y坐标,right和bottom代表元素右下角的X和Y坐标
  • height和width属性老版本 IE 不支持
  • 返回的结果并不是“实时的”
<div type="width:100px;height:100px;background:#f00;padding:100px"></div>
<script>
    var div = document.getElementsByTagName('div')[0];
</script>

查看元素的尺寸

  • div.offsetWidth —— 100
  • div.offsetHeight —— 100

查看元素的位置 (返回相对于父级进行定位)

  • div.offsetLeft —— 100
  • div.offsetTop —— 100

查看有父级的定位

  • div.offsetParent 返回最近的有定位的父级

求元素相对于文档的坐标

  • div.clientHeight 可见区域高度
  • div.clientWidth

使滚动条滚动

  • window.scroll(x, y); 滚动到 x, y 坐标
  • window.scrollTo(x, y); 滚动到 x, y 坐标
  • window.scrollBy(x, y); 不断累加 x, y 坐标

编辑页面内容(调试用)

document.body.contentEditable = true